#ifndef ENTITY3D_H
#define ENTITY3D_H

#include "Defines.h"
//#include "Node.h" 


struct D3DXMATRIX;
struct D3DXPLANE;

namespace ns
{
	class Node;

	class ENGINE_API Entity3d
	{
		public:
			Entity3d();
			~Entity3d();

			virtual void UpdateTransformation();		
			virtual void Draw()=0;
		
		//Node* parent;

		float GetPosX();
		float GetPosY();
		float GetPosZ();
		float GetRotX();
		float GetRotY();
		float GetRotZ();
		float GetScaleX();
		float GetScaleY();
		float GetScaleZ();

		void SetPosX(float x);
		void SetPosY(float y);
		void SetPosZ(float z);
		void SetRotX(float x);
		void SetRotY(float y);
		void SetRotZ(float z);
		void SetScaleX(float x);
		void SetScaleY(float y);
		void SetScaleZ(float z);

		void SetParent(Node* node);
		Node* GetParent();

	protected:
		D3DXMATRIX* localTransform;
		D3DXMATRIX* wordTransform;
		D3DXMATRIX* position;
		D3DXMATRIX* rotation;
		D3DXMATRIX* scale;

		Node* parent;

		void UpdateLocalTransformation();

		float posX,posY,posZ;
		float rotX,rotY,rotZ;
		float scaleX,scaleY,scaleZ;
	};
}

#endif